package com.tjec.project.businessWorkbench.mapper;

import com.tjec.project.businessWorkbench.domain.BmsProjectDocCatalog;
import com.tjec.project.system.domain.SysDept;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 项目文档目录Mapper接口
 * 
 * @author pangyongfeng
 * @date 2020-04-26
 */
public interface BmsProjectDocCatalogMapper 
{
    /**
     * 查询项目文档目录
     * 
     * @param guid 项目文档目录ID
     * @return 项目文档目录
     */
    public BmsProjectDocCatalog selectBmsProjectDocCatalogByGuid(String guid);
    
    /**
     * 查询目录guid下是否有目录或者文件
     * @param guid 文档目录id
     * @return
     */
    public int getChildrenFilesOrCatalog(String guid);

    /**
     * 查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogList(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 优化版-查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogListNew(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 优化版-根目录-查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogListFirstNew(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 查询导出项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogExportList(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 新增项目文档目录
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 结果
     */
    public int insertBmsProjectDocCatalog(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 修改项目文档目录
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 结果
     */
    public int updateBmsProjectDocCatalog(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 更新文件数量-加
     * @param bmsProjectDocCatalog
     * @return
     */
    public int updateBmsProjectDocCatalogCountsPlus(String guid);
    
    /**
     * 更新文件数量-减
     * @param bmsProjectDocCatalog
     * @return
     */
    public int updateBmsProjectDocCatalogCountsSub(String guid);
    
    

    /**
     * 删除项目文档目录
     * 
     * @param guid 项目文档目录ID
     * @return 结果
     */
    public int deleteBmsProjectDocCatalogByGuid(String guid);
    
    /**
     * 查询项目文档目录
     * 
     * @param businessId 业务id
     * @return 项目文档目录
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogByBusinessId(String businessId);
    
    /**
     * 查询本业务下是否有收资管理、成果校审、归档补充资料等目录
     * 
     * @param businessId 业务id
     * @param isEdit 目录类别
     * @return
     */
    public int checkDocCatalog(@Param("businessId")String businessId, @Param("isEdit")String isEdit);
    
    /**
     * 查询本业务下收资管理、成果校审、归档补充资料等目录的guid
     * @param businessId 业务id
     * @param isEdit 目录类别
     * @return
     */
    public String selectDocCatalog(String businessId,String isEdit);
    
    /**
     * 根据项目文档目录父级id和名称获取项目文档目录
     * @param parentId 项目文档目录父级id
     * @param name 目录名称
     * @return
     */
    public BmsProjectDocCatalog selectCatalogByParentIdAndName(String parentId,String name);
    
    /**
     * 查询目录下的文件数量
     * @param catalogId 目录id
     * @return
     */
    public Integer selectDocCounts(String catalogId);
    
    /**
     * 查询目录下的附件数量
     * @param catalogId 目录id
     * @return
     */
    public Integer selectAttachmentsCounts(String catalogId);
    
    /**
     * 查询收资管理目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectPickUpCounts(String businessId);
    
    /**
     * 查询资料归档补充目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectArchiveCounts(String businessId);
    
    /**
     * 查询成果校审目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectResultCounts(String catalogId);
    
    public Integer checkDocCounts(String guid);

    /**
     * 查询项目文档目录列表
     *
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogMobileList(BmsProjectDocCatalog bmsProjectDocCatalog);

    Integer selectPickUpSimpleCounts(String businessId);

    Integer selectDocSimpleCounts(String catalogId);

    Integer selectArchiveSimpleCounts(String businessId);

    Integer selectResultSimpleCounts(String catalogId);
}
